package com.dkm.orproject.dkmoa.dao;

import com.dkm.orproject.dkmoa.domain.OaOrganization;
import com.dkm.orproject.dkmoa.domain.vo.OaOrganizationVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

@Mapper
public interface OaOrganizationMapper {
    /**
     * 根据id 删除
     * @param pkPostId 岗位ID
     * @return 是否删除成功
     */
    int deleteByPrimaryKey(Long pkPostId);

    int insert(OaOrganization record);

    /**
     * 增加岗位
     * @param record 岗位信息
     * @return
     */
    int insertSelective(OaOrganization record);

    /**
     * 根据岗位id查询
     * @param pkPostId 岗位id
     * @return
     */
    OaOrganization selectByPrimaryKey(Long pkPostId);

    /**
     * 更新某个岗位的信息
     * @param record 岗位信息
     * @return 是否更新成功
     */
    int updateByPrimaryKeySelective(OaOrganization record);

    int updateByPrimaryKey(OaOrganization record);

    /**
     * 查询所有部门的信息
     * @return 人员集合
     */
    List<OaOrganization> findByAll();

    /**
     * 逻辑删除
     * @param pkPostId 部门Id
     * @param  personnelName 更新人
     * @param  date 更新时间
     * @return 是否更新成功
     */
    int updateById(@Param("pkPostId")Long pkPostId,@Param("personnelName") String personnelName,@Param("date") Date date );

    /**
     * 批量物理删除
     * @param list 部门的集合
     * @return 删除的行数
     */
    int deleteAll(List<Long> list);

    /**
     * 批量逻辑删除
     * @param list 部门的集合
     * @return 删除的行数
     */
    int updateAll(List<Long> list,@Param("personnelName") String personnelName,@Param("date") Date date);

    /**
     * 总行数
     * @param organization 人员模型 用于条件查询
     * @param startTime 开始时间
     * @param endTime 结束
     * @return 总行数
     */
    Long rowCount(@Param(value = "organization") OaOrganizationVo organization ,@Param(value = "startTime") String startTime,@Param(value = "endTime") String endTime);

    /**
     * 查询
     * @param  organization 岗位
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 岗位集合
     */
    List<OaOrganizationVo> findAll(@Param(value = "organization") OaOrganizationVo organization, @Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime);

    /***
     * 查询关键字是否多余
     * @param keyword 关键字
     * @return 数字
     */
    int findByKeyword(String keyword);

    /**
     * 根据部门查找岗位
     * @param departmentId 部门ID
     * @return 岗位信息的集合
     */
    List<OaOrganization> findById(Long departmentId);

    /**
     * 查看岗位的详情
     * @param pkPostId 岗位信息
     * @return 岗位信息
     */
    OaOrganizationVo  selectByPkPostId(Long pkPostId);
    /**统计数量为编号做好准备 */
    int count();

    /**
     * 查询所有的岗位
     * @return 岗位集合
     */
    List<OaOrganization> selectAll();

}